package com.api.syh56.shengyunhui.entity.vo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.ColumnComment;
import com.gitee.sunchenbin.mybatis.actable.annotation.DefaultValue;
import lombok.*;
import lombok.experimental.FieldDefaults;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WaybillDetailVO {
    private Long id;

    private String waybillNumber;

    /**
     * 司机ID
     */
    private Long driverId;

    // 货主ID
    private Long shiperId;

    // 发货地址id
    private Long shipAddressId;

    // 收货地址id
    private Long receiveAddressId;

    private Long goodsId;

    private Long dedicatedId;

    /**
     * 报价id
     */
    private Long quoteId;

    /**
     * 交货方式 1自送专线 2上门提货
     */
    private short shipDeliveryMethod;

    /**
     * 配送方式 1送货上门 2自提
     */
    private short receiveDeliveryMethod;

    /**
     * 付款方式 1寄付现结 2到付 3寄付月结
     */
    private short payMethod;

    /**
     * 期望送达天数
     */
    private int expectedDeliveryDays;

    /**
     * 期望配送时间
     */
    private LocalDateTime expectedDeliveryTime;

    /**
     * 确认报价时间
     */
    private LocalDateTime quoteTime;

    /**
     * 发货时间
     */
    private LocalDateTime shipTime;

    /**
     * 到达时间
     */
    private LocalDateTime deliveredTime;

    /**
     * 结算时间
     */
    private LocalDateTime settleTime;

    /**
     * 订单状态
     */
    private short waybillStatus;

    /**
     * 货物运输状态
     */
    private short deliveryStatus;

    private String remark;

    /**
     * 是否联系过货主
     */
    private boolean isTouched;

    /**
     * 取消原因
     */
    private String cancelReason;

    /**
     * 取消人 // 货主1 or 司机2
     */
    private int cancelBy;

    /**
     * 是否可退定金
     */
    private boolean returnDeposit;

    /**
     * 发货公司
     */
    private String shipCompany;

    /**
     * 收货公司
     */
    private String receiveCompany;

    /**
     * 是否收到货
     */
    private boolean isReceipt;

    /**
     * 回单照片
     */
    private String receiptUrl;

    /**
     * 货车当前位置（经纬度）
     */
    private String currentLocation;

    /**
     * 是否需要开票
     */
    private boolean needInvoiced;

    /**
     * 是否已开票
     */
    private boolean invoiced;

    /**
     * 税额
     */
    private BigDecimal tax;

    /**
     * 开票金额
     */
    private BigDecimal offerendMinusTax;

    /**
     * 定金
     */
    private BigDecimal deposit;

    /**
     * 服务费
     */
    private BigDecimal offerInit;

    /**
     * 运费
     */
    private BigDecimal offerEnd;

    /**
     * 含税总额(服务费和运费)
     */
    private BigDecimal offerAll;

    /**
     * 车牌号码
     */
    private String carNumber;

    /**
     * 优惠券Id
     */
    private Long cuoId;

    /**
     * 实际支付金额
     */
    private BigDecimal actAmount;

    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 设备号
     */
    private String eid;

    /**
     * 支付金额类型
     */
    private Short payType;

    /**
     * 加锁
     */
    private Short waybillLock;

    /**
     * 车牌颜色(1 蓝色、2 黄色、3 黄绿色)
     */
    private String cardColor;

    /**
     * 总路程
     */
    private double totalDistance;

    /**
     * 订单完成时间
     */
    private LocalDateTime finishTime;

    /**
     * 创建者用户ID
     */
    private Long creatorUserId;

    private LocalDateTime creationTime;

    /**
     * 最后修改者用户ID
     */
    private Long lastModifierUserId;

    /**
     * 最后修改时间
     */
    private LocalDateTime lastModificationTime;

    /**
     * 是否已删除
     */
    private boolean isDeleted;


    /**
     * 发货市级区域编码
     */
    private Long oriAdCode;
    /**
     * 收货市级区域编码
     */
    private Long dstAdCode;


    private String oriAndDstAdCode;

    /**
     * 专线详细地址
     */
    private String driverLocation;

    /**
     * 提示次数
     */
    private Integer sendTimes;

    /**
     * 报价数量统计
     */
    private int offerCount;

    /**
     * 专线数量
     */
    private int routeNum;

    /**
     * 发货城市
     */
    private String oriCity;

    /**
     * 到达城市
     */
    private String dstCity;
}
